One of the most important aspects of a modem computer system is the ability to generate an image of textual or graphical information. This information can be manipulated by the computer, visually displayed and stored. This display is generally performed by a display monitor and by a "hard" printed copy. To create the hard copy of this information, a computer system generally includes a printing device which is electrically connected to the computer system and controlled by it in order to generate a permanent image on a selected medium. Examples of raster oriented printing devices in common use are dot matrix, ink jet and LASER printers that fix permanent images on paper under control of the computer. Although paper is the most common medium, other media are often used, such as photographic film and overhead transparencies.
FIG. 3a indicates the correspondence between a computer memory raster 3a01 contains an image 3a02 which can be displayed on a raster monitor 3a06 or a raster printer 3a08. The memory raster 3a01 is sent to the printer 3a08 as indicated by arrow 3a09. The printer 3a08 transfers the raster image 3a02 to a resulting image 3a04 on paper 3a03. Similarly, the memory raster 3a01 is sent to a monitor 3a06 as indicated by arrow 3a10. The display 3a06 transfers the raster image 3a02 to a resulting image 3a07 on the display 3a06. Images 3a07 and 3a04 are dependent on the resolution of each device. The same image 3a02 if sent to devices of differing resolution will be produced at different sizes.
In order to print a document that is displayed on the monitor or stored within the memory, several actions must take place. First, since the print medium generally has a fixed size, the printable information must be divided into pieces which are small enough to fit on the selected medium, a process which is called pagination. In addition, the information may need to be reformatted from the format in which it is either displayed or stored into a format which is suitable for controlling the printing device to actually perform the printing on the medium. The reformatting in this latter step may include the insertion of control commands into the printable information in order to control the printing device. These added commands may, for example, include such commands as carriage returns, line feeds, form feeds, spaces and font information, all of which format the printable information. The reformatting may also include a conversion step in which the information is converted into the form used by the printing device. For example, if the printer uses the PostScript page description language, this reformatting would include the creation of a PostScript program to generate the printed page. Similarly, if the printer uses the PCL page description language.
The pagination and reformatting necessary to convert the printable information into a form which can be printed on a given printing device is generally performed by software programs running within the computer system. Software programs operating on a computing system generally can be categorized into two broad classes: operating systems which are usually specific to a type of computer system and consist of a collection of utility programs that enable the computer system to perform basic operations, such as storing and retrieving information on a peripheral disk memory, displaying information on an associated video display, performing rudimentary file operations including the creation, naming and renaming of files and, in some cases, performing diagnostic operations in order to discover or recover from malfunctions.
By itself, the operating system generally provides only very basic functions and must be accompanied by an "application" program. The application program interacts with the operating system to provide much higher level functionality and a direct interface with the user. During the interaction between the application program and the operating system, the application program typically makes use of operating system functions by sending a series of task commands to the operating system which then performs the requested tasks. For example, the application program may request that the operating system store particular information on the computer disk memory or display information on the video display.
FIG. 1 is a schematic illustration of a typical computer system utilizing both an application program and an operating system. The computer system is schematically represented by box 100, the application program is represented by box 102 and the operating system by box 106. The interaction between the application program 102 and the operating system 106 is illustrated schematically by arrow 104. This dual program system is used on many types of computers systems ranging from mainframes to personal computers.
The method for handling printing, however, varies from computer to computer, and, in this regard, FIG. 1 represents a prior art personal computer system. In order to provide printing functions, the application program 102 interacts (as shown schematically by arrow 108) with printer driver software 110. Printer driver software 110 is generally associated with an application program and reformats and converts the printable information as necessary. Since each printer has its own particular format and control command set, which must be embedded in the text properly to control the printer, the printer driver software 110 must be specifically designed to operate with one printer or one type of printer. Application support for differing types of printers generally requires support for a specialized printer driver for each type of printer supported. Often a multitude of printer drivers were provided with the application to support a wide range of printing devices.
The printer driver software 110 produces a reformatted information stream containing the embedded commands as shown schematically as arrow 114. The converted information stream is, in turn, applied to a printer port 112 which contains circuitry that converts the incoming information stream into electrical signals. The signals are, in turn, communicated to the printer 118 via some data pathway 116 such as a dedicated cable or a network. Printer 118 usually contains an "imaging engine" which is a hardware device or a ROM-programmed computer which takes the incoming information stream and converts it into the electrical signals necessary to drive the actual printing elements. The result is a "hard copy" output on the selected medium.
While the configuration shown in FIG. 1 generally works in a satisfactory manner, it has several drawbacks. Since the printer driver software 110 is specific to each type of printer, a separate driver had to be provided for each printer type with which the application program is to operate. In the personal computer market, there are a large number of different printer types that are compatible with each type of computer and, therefore, as the number of printer types proliferated, so did the number of printer drivers which were required for each application program so that the program was compatible with most available printers. Therefore, application program developers had to provide, test, and support larger and larger numbers of printer drivers with each application program, resulting in wasted time and effort and wasted disk space to hold the drivers, only one or two of which were of interest to any particular user. Unfortunately, if a user purchased an application program and it did not include a printer driver which could control the printer which the user owned, unpredictable operation occurred, resulting in program returns and user dissatisfaction.
In addition, it was also necessary for each application program to provide high level printing functions such as pagination and page composition (including addition of margins, footnotes, figure numbers, etc.) if such functions were desired. Consequently, each application program developer had to spend time developing programs to implement common printing functions which programs were specific to each application program, thereby resulting in duplicated effort and wasted time.
In order to overcome the aforementioned difficulties, the prior art arrangement was modified as shown in FIG. 2. In this new arrangement, computer system 200 is still controlled by application program 202 which cooperates, as shown schematically by arrow 204, with operating system 206. However, in the system shown in FIG. 2 operating system 206 includes printer drivers 214. A separate printer driver must still be provided for each different type of printer, but the printer drivers are sold with, and part of, the operating system. Consequently, it is not necessary for each application program to have its own set of printer drivers. An application program, such as application program 202, communicates with the printer driver 214 by means of a standardized interface 210. Two common interfaces are called "grafports" or "device contexts". Illustratively, application program 202 provides information (schematically shown by arrow 208) in a standardized form to the grafport 210. The grafport 210, in turn, forwards information, as shown by arrow 212, to printer driver 214 which reformats and converts the information as previously described into the format required by the printer. The output of printer driver 214 is provided (illustratively shown as arrow 216) to printer port 218 where it is converted to electrical signals that are transmitted, via a data pathway 220, to the printer 222.
The configuration shown in FIG. 2 has the advantage that the application program developer need not worry about the specific computer and printer combination on which the program will ultimately run in order to provide printing capabilities to the application program. However, it still suffers from the drawback that, if desired, high level printing capabilities such as pagination and page composition must still be designed into each application program, thereby duplicating program code and wasting programming resources.
These problems were addressed by providing an object-oriented printing interface that communicated with the remainder of the operating system through a standard interface such as a grafport and printer drivers provided for each printer type within the operating system. So that an application not only need not worry about the particular printer/computer combination with which it is to operate, but also need not have a built in document formatting capability. This printing interface included objects that provided queries for device identification, optimized imaging, and printer status. Other objects were also provided for data transfer to bracket connections prior to sending and receiving information. Still other objects were provided for canceling a print job, pausing a job, and clearing out a job. Finally, an object was also provided for supporting multiple streams of communication to an imaging task.
FIG. 4 shows a schematic overview of another prior art computer system utilizing an object-oriented printing interface. The computer system is shown generally as a box 400, and an application program 402 and an operating system 406 are provided to control and coordinate the operations of the computer. Application program 402 communicates with operating system 406 as indicated by arrow 404. However, in accordance with an embodiment of the invention, rather than communicating directly with a standard interface, such as grafport 410, application program 402 can now communicate with operating system 406 at a higher level when it wishes to print information. This latter interaction is accomplished by providing an object-oriented printing interface shown schematically as box 424. Printing interface 424 responds to a series of simple commands generated by application program 402 in order to perform various formatting and pagination functions. The formatted, printable information is then transmitted to a grafport 410 as indicated schematically by arrow 426. It is possible for application program 402 to communicate directly with grafport 410 as in the prior art arrangement shown in FIG. 2, however, it is not expected that this will be the normal mode of operation.
In any case, the information flows through grafport 410, and as indicated by arrow 412, is provided to a printer handler 414. Printer handler 414 is similar to printer drivers previously described. However, it is "intelligent" and offers some additional capabilities. Essentially, printer handler 414 processes the incoming data stream indicated by arrow 412 and adds the necessary printer commands to control the associated printer schematically illustrated as printer 422. The reformatted printer data stream is provided, as indicated by arrow 416, to a printer port 418 which converts the data into electrical signals that are sent over data pathway 420 to printer 422.
Although a significant improvement over the previously described art shown in FIG. 2, this approach still suffers from the drawback that once the Printing interface 424 provided support for highly functional graphic command objects--objects that could not be simply represented within the printer's PDL--the print driver would either simply not perform the command, or fall back to printing a low resolution pixelmap representative of the image associated with the object. This problem is demonstrated with graphic primitives such as high order curves, sampled 3D surfaces, non-centered pens, color masks and color blending transfer modes, and user programmable 3D shaders. These graphic commands are not supported in either PCL version 5 or PostScript.